// MMediaTag.h: interface for the MMediaTag class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_MMEDIATAG_H__A7A52A27_F975_4809_BC9B_2265B6DCC6EE__INCLUDED_)
#define AFX_MMEDIATAG_H__A7A52A27_F975_4809_BC9B_2265B6DCC6EE__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <e32std.h>
#include <e32des16.h>
#include <badesca.h>        // for CDesCArray

// Error definition
#define ERR_NOERROR			0
#define ERR_FILETYPE		1
#define ERR_TEXTENCODE		2

// Const strings
_LIT(KEmtpy, "");
_LIT(KUnchangeFlag, "*");
_LIT8(KEmtpy8, "*");

// Forward declare
class RFs;

class MMediaTag  
{
public:
	MMediaTag();
	virtual ~MMediaTag();
	
public:
	/*------------------------------------------------------------------
	Function:		GetTagInfo
	Class:			MMediaTag
	Parameters:		aIndex - index of the tags
	Return:			If the specify tag is existed, the return value is stored in aValue, 
	and Tag name is stored in aName, and the return value is zero,
	otherwise return error code
	Descript:		Get the tag information of the specify index
	Author:			ma811
	Date:			2007/10/28
	------------------------------------------------------------------*/
	virtual TInt GetTagInfo(TInt aIndex, TDes& aName, TDes& aValue) = 0;
	
	/*------------------------------------------------------------------
	Function:		GetTagCount
	Class:			MMediaTag
	Parameters:		Zero OK
	Return:			Total number of the tags in the media file
	Descript:		Get number of tags
	Author:			ma811
	Date:			2007/10/28
	------------------------------------------------------------------*/
	virtual TInt GetTagCount() = 0;

	virtual TInt ChangeTagL(RFs& aSession, const CDesCArray& aTagNames, const CDesCArray& aTagValues) = 0;
	
	virtual void ConstructL(RFs& aSession, TFileName& aFile);

protected:
	// File path of MP3 file
	TFileName	iFilePath;
};

#endif // !defined(AFX_MMEDIATAG_H__A7A52A27_F975_4809_BC9B_2265B6DCC6EE__INCLUDED_)
